export default {
	// 防抖
	debounce(func, wait) {
		let timeout = null;
		return function() {
			let context = this;
			let args = arguments;
			if (timeout) clearTimeout(timeout);
			timeout = setTimeout(() => {
				func.apply(context, args);
			}, wait);
		};
	},
	// 单位转换
	setUnitNumber(str) {
		if (!str) return 0;
		let num = parseInt(str);
		if (num >= 10000 && num < 100000000) {
			return `${(num / 10000).toFixed(2)}万`
		} else if (num >= 100000000) {
			return `${(num / 100000000).toFixed(2)}亿`
		} else {
			return num
		}
	},
	// 数字动态变化（数字，变化弧度，回调函数）
	setIntervalNumber(num, dates, callback) {
		// 大的数字推荐dates=300
		if (num === 0) {
			callback(0)
			return
		};
		let index = 0;
		let timer = setInterval(() => {
			if (index >= num) {
				clearInterval(timer);
				callback(num);
				return
			}
			index += num / dates
			callback(index);
		}, 1);
	},
	// 动态数字变化加强版（变化时间，变化起始值，变化结束值，回调函数）
	dynamicChangeNumber(duration, from, to, onProgress) {
		const speed = (to - from) / duration;
		const startTime = Date.now();
		let value = from;
		const _run = () => {
			const now = Date.now();
			const time = now - startTime;
			if (time >= duration) {
				value = to;
				onProgress && onProgress(value);
				return;
			}
			value = from + speed * time;
			onProgress && onProgress(value);
			// 注册下一次变化
			requestAnimationFrame(_run);
		};
		_run();
	},
	// table表格序号方法
	indexMethod(index, pageObj) {
		return index + 1 + pageObj.size * (pageObj.current - 1);
	},
	// 下载文件
	downloadFile(api, obj) {
		let index = obj.url.indexOf(`${api}`)
		let url = obj.url.substring(index + `${api}`.length, obj.url.length)
		fetch(url)
			.then((res) => res.blob())
			.then((blob) => {
				const link = document.createElement('a')
				link.href = window.URL.createObjectURL(blob)
				link.download = obj.name
				document.body.appendChild(link)
				link.click()
				//在资源下载完成后 清除 占用的缓存资源
				window.URL.revokeObjectURL(link.href)
				document.body.removeChild(link)
			})
	},
	// 判断wangeditor富文本编辑器是否为空(true表示空)
	isWangeditorNull(str) {
		if (!str) return true;
		str = str.replace(/<[^<p>]+>/g, '') // 将所有<p>标签 replace ''
			.replace(/<[</p>$]+>/g, '') // 将所有</p>标签 replace ''
			.replace(/&nbsp;/gi, '') // 将所有 空格 replace ''
			.replace(/<[^<br/>]+>/g, '') // 将所有 换行符 replace ''
		if (str == '') return true
		let regu = '^[ ]+$'
		let re = new RegExp(regu)
		return re.test(str)
	},
}